package com.user.query.concurrent;

import java.util.concurrent.locks.Lock;
import java.util.concurrent.locks.ReentrantLock;

/**
 * Created by ricky on 2017/3/15.
 *  共享数据的一致性
 * @author 华源润通郑州开发部
 * @version 1.0
 */
public class CommDataSecurity {
    private volatile int value=0;//易变性修饰
    private Lock lock=new ReentrantLock();
    /**
     * 解决数据一致性的锁方式
     * */
    public int getNextValue(){
        lock.lock();
        try {
            ++value;
            ++value;
            return value;
        } finally {
            lock.unlock();
        }
    }

    /**
     * 数据一致性的第一种方式
     * @return
     */
    public synchronized int getNextValue2(){
        ++value;
        ++value;
        return value;
    }
}
